#ifndef _ABSTRACT_FILE_H_
#define _ABSTRACT_FILE_H_


/*
	class : AbstractFile
	desc : Sets up an interface for dealing with files
		without having to worry about the file system.
*/
class AbstractFile
{

	public :
		//seeks the position in the file
		virtual void seek(unsigned long int pos, unsigned char origin)=0;
		//opens the file
		virtual void open()=0;
		//closes the file
		virtual void close()=0;
		//reads a byte from the file
		virtual unsigned char readByte()=0;
		//reads the file and gets a length of bytes from it
		virtual void* read(unsigned long int length)=0;
		//writes a byte to the file
		virtual void writeByte(unsigned char byte)=0;
		//writes a length of bytes to the file.
		virtual void write(void* data)=0;
		//determines the file position of the file
		enum ABSTRACT_FILE_POSITION
		{
			ABSTRACT_FILE_START,
			ABSTRACT_FILE_END,
			ABSTRACT_FILE_CURRENT
		};	
};



#endif
